package com.hktry.test2;

import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

/**
 * 在程序编译后采取去泛型化的措施，在编译过程中，正确检验泛型结果后，会将泛型的相关信息擦出，并且在对象进入和离开方法的边界处添加类型检查和类型转换的方法，泛型信息是不会进入程序运行阶段.
 * 对此总结成一句话：泛型类型在逻辑上看以看成是多个不同的类型，实际上都是相同的基本类型。
 * 
 * 类泛型，接口泛型，方法泛型
 * 
 * 泛型通配符 "?" 此为实参，
 * 
 * 优点：
 * 1：类型安全
 * 2：消除强制性类型转换，使得代码变得更加客户，减少错误机会，所以的强制转换都是自动和隐式的
 * 3：提高性能
 * 
 * 注意事项：
 *  （1）泛型的类型参数只能是类类型（包括自定义类），不能是简单类型。
	（2）泛型的类型参数可以有多个。
	（3）不能对确切的泛型类型使用instanceof操作。如下面的操作是非法的，编译时会出错。
 * @author hktry
 *
 */


public class FXTest {
	@Test
	public void test1(){
		List<String> stringArrayList=new ArrayList<String>();
		List<Integer> integerArrayList=new ArrayList<Integer>();
		Class classStringArrayList = stringArrayList.getClass();
		Class classIntegerArrayList = integerArrayList.getClass();
		System.out.println(classStringArrayList);
		System.out.println(classIntegerArrayList);
		if(classStringArrayList.equals(classIntegerArrayList)){
			System.out.println("true");
		}
	}
}
